Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[NIT-2740] Horizontal Scaling of Validation Node #2354

Open
wants to merge 30 commits into
base: master
Choose a base branch
from

Conversation

anodar
Copy link
Contributor

@anodar anodar commented May 30, 2024

No description provided.

@cla-bot cla-bot bot added the s Automatically added by the CLA bot if the creator of a PR is registered as having signed the CLA. label May 30, 2024
@anodar anodar changed the base branch from master to sepolia-tooling-merge May 30, 2024 11:19
@anodar anodar requested a review from tsahee May 30, 2024 15:14
Copy link
Contributor

@tsahee tsahee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initial

validator/server_arb/redis/consumer.go Outdated Show resolved Hide resolved
validator/client/validation_client.go Show resolved Hide resolved
@anodar anodar requested a review from tsahee June 5, 2024 08:38
@anodar anodar marked this pull request as ready for review June 5, 2024 08:47
@anodar anodar requested a review from amsanghi June 5, 2024 08:47
@anodar anodar closed this Jun 24, 2024
@amsanghi amsanghi reopened this Jul 1, 2024
@amsanghi amsanghi changed the base branch from sepolia-tooling-merge to bold-review July 1, 2024 11:29
@amsanghi amsanghi changed the title Sepolia tooling merge redis [NIT-2645] Sepolia tooling merge redis Jul 1, 2024
@amsanghi amsanghi requested a review from rauljordan July 1, 2024 11:40
@amsanghi amsanghi changed the title [NIT-2645] Sepolia tooling merge redis [NIT-2740] Horizontal Scaling of Validation Node Aug 27, 2024
Copy link
Contributor

@rauljordan rauljordan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lookin great so far! No comments. Just awaiting some tests so we can merge in

rauljordan
rauljordan previously approved these changes Aug 29, 2024
Copy link
Contributor

@rauljordan rauljordan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

awesome job! Do you know if there are metrics we can use to track the number of pending requests in grafana?

@amsanghi
Copy link
Contributor

awesome job! Do you know if there are metrics we can use to track the number of pending requests in grafana?

Good point, added a metric at consumer level for pending messages. We can use that to follow the load.

@tsahee tsahee marked this pull request as draft September 27, 2024 17:59
@amsanghi amsanghi marked this pull request as ready for review October 9, 2024 10:37
Base automatically changed from bold-review to master December 6, 2024 20:04
@PlasmaPower PlasmaPower dismissed rauljordan’s stale review December 6, 2024 20:04

The base branch was changed.

Copy link

cla-bot bot commented Dec 17, 2024

We require contributors to sign our Contributor License Agreement. In order for us to review and merge your code, please sign the linked documents below to get yourself added. https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=b15c81cc-b5ea-42a6-9107-3992526f2898&env=na3&acct=6e152afc-6284-44af-a4c1-d8ef291db402&v=2

@cla-bot cla-bot bot removed the s Automatically added by the CLA bot if the creator of a PR is registered as having signed the CLA. label Dec 17, 2024
Copy link
Member

@eljobe eljobe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

} else {
serverAPI = NewExecutionServerAPI(arbSpawner, arbSpawner, arbConfigFetcher)
serverAPI = NewExecutionServerAPI(arbSpawner, arbSpawner, redisSpawner, arbConfigFetcher)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sereverAPI is a thin struct that implements rpc endpoints (see it's usage in valAPI).
It doesn't need and shouldn't be aware of the redisSpawner.
redisSpawner belongs directly in ValidationNode struct, like redisConsumer

ApiAuth bool `koanf:"api-auth"`
ApiPublic bool `koanf:"api-public"`
Arbitrator server_arb.ArbitratorSpawnerConfig `koanf:"arbitrator" reload:"hot"`
RedisExecRunner redis.ValidationServerConfig `koanf:"redis-exec-runner"`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want a separate BOLD execution config?
I think we can use the existing config in arbConfigFetcher().RedisValidationServerConfig
There is a separate queue for BOLD with the same module root, so it makes sense to me that we only need one config, and if we really don't want BOLD we don't need to have a queue for it. This has the advantage of the same config being used in normal operations (validation queue) as in emergencies.
Not 100% certain, though.

}, nil
}

func (s *ExecutionSpawner) Start(ctx_in context.Context) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this could be embedded into the "normal" redis consumer, possibly as a a separate StartBoldSpawner function that does the same and is called from the consumer's Start.

}

func NewExecutionClient(config rpcclient.ClientConfigFetcher, stack *node.Node) *ExecutionClient {
func NewExecutionClient(config rpcclient.ClientConfigFetcher, redisBoldValidationClientConfig *redis.ValidationClientConfig, stack *node.Node) *ExecutionClient {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

boldValclient does not need to be a field of executionclient, they are separate beings.

ValidationServerConfigsList: "default",
ValidationServer: rpcclient.DefaultClientConfig,
RedisValidationClientConfig: redis.DefaultValidationClientConfig,
RedisBoldValidationClientConfig: redis.DefaultValidationClientConfig,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we need a separate one for BOLD or could we use the same one?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants